package com.shujia.wyh.day06;

/*
        数组：
            1、数组是存储同一种数据类型多个元素的集合，也可以看作是一个容器
            2、数据既可以存储基本数据类型的数据，也可以存储引用数据类型的数据

        一维数据的语句定义格式：
            1、数据类型[] 数组名
                举例：int[] arr1
            2、数据类型 数组名[]
                举例：int arr2[]
            注意：针对于两种定义格式，推荐使用第一种格式，因为第一种的写法可读性更强
                第二种在早期确实有很多人使用，不过，现在使用第一种的人越来越来多，将来java很有很可能把第二种去掉

       如果只是单纯的定义一个数组是没有任何意义的因为里面没有值，所以要在使用数据之前进行初始化，如果不初始化就不能使用
       如何给一个数组进行初始化呢？
       初始化：
        所谓初始化，就是给数组中的元素进行分配内存空间，并为数组中的每个元素进行赋值
       数组的初始化：
            1、动态初始化：
                初始化时只指定数组长度，由系统（JVM）为数组分配初始值。
            2、静态初始化
                初始化时指定每个数组元素的初始值，由系统(JVM)决定数组长度。
      动态初始化：初始化时只指定数组长度，由系统（JVM）为数组分配初始值。
        语句定义格式：数据类型[] 数组名 = new 数据类型[数组长度];
        举例：int[] arr = new int[3];
        解释：定义了一个可以存储3个int类型元素的数组
 */
public class ArrayDemo1 {
    public static void main(String[] args) {
        //定义一个存储int类型数据的数组
//        int[] arr;
        //java: 可能尚未初始化变量arr
//        System.out.println(arr);

        /**
         * 左边：
         *      int:说明数组中存储的元素数据类型为int
         *      []:表示它是一个一维数组
         *      arr:表示这个数组的名字，符合标识符命名规则
         *
         *  右边：
         *      new:今后但凡看到new，就说明给这个变量（对象）分配堆内存空间
         *      int:说明数组中存储的元素数据类型为int
         *      []:表示它是一个一维数组
         *      3:表示数组中可以存储3个元素，数组的长度为3
         */
        int[] arr = new int[3];
        System.out.println(arr); //[I@4554617c
        //今后我们在编写代码的过程中，拿到地址值是没有任何意义的，我们更希望的是获取数组中存储的元素对应值
        //如何获取数组中元素值呢？
        //java中数组提供一个获取数组中元素的方式，其实每一个元素都有一个编号的，并且是从左往右开始编号，从0开始
        //这样的编号，在大数据行业中有一个专业的叫法：索引
        //通过这个索引来获取数组中的元素值，格式：数组名[索引];
        //获取第一个元素的值
        int a = arr[0];
        System.out.println(a);
        //获取第二个元素的值
        System.out.println(arr[1]);
        //获取第三个元素的值
        System.out.println(arr[2]);
    }
}
